﻿@{
    ViewBag.Title = "Set_Flow";
    Layout = "~/Views/Shared/_LayoutForWorkFlow.cshtml";
    Business.Platform.WorkFlow bworkFlow = new Business.Platform.WorkFlow();
    Business.Platform.DBConnection bdbConn = new Business.Platform.DBConnection();
    string base_TypesOptions = bworkFlow.GetTypeOptions();
    string link_DBConnOptions = bdbConn.GetAllOptions();
    bool isAdd = "1" == Request.QueryString["isadd"];

    string flowID = Request.QueryString["flowid"].IsGuid() && !isAdd ? Request.QueryString["flowid"] : Guid.NewGuid().ToString();
    string defaultManager = Business.Platform.Users.PREFIX + Business.Platform.Users.CurrentUserID.ToString();
}
<form method="post">
    <div class="mytab" id="mytab">
        <ul>
            <li class="mytabli2" for="div_base">基本信息</li>
            <li class="mytabli1" for="div_data">数据连接</li>
            <li class="mytabli1" for="div_title">标识字段</li>
        </ul>
        <div style="clear: both;"></div>
    </div>
    <div id="div_base" class="mytab_div" style="display: block;">
        <table cellpadding="0" cellspacing="1" border="0" width="99%" class="formtable">
            <tr>
                <th style="width: 100px;">流程ID：</th>
                <td>
                    <input type="text" id="base_ID" name="base_ID" readonly="readonly" value="@flowID" class="mytext" style="width:75%"  /></td>
            </tr>
            <tr>
                <th>流程名称：</th>
                <td>
                    <input type="text" id="base_Name" name="base_Name" class="mytext" style="width: 75%" /></td>
            </tr>
            <tr>
                <th>流程分类：</th>
                <td>
                    <select id="base_Type" name="base_Type" class="myselect"
                        style="">
                        <option value=""></option>@Html.Raw(base_TypesOptions)
                    </select></td>
            </tr>
@*            <tr>
                <th>管理者：</th>
                <td>
                    <input type="text" id="base_Manager" value="@defaultManager" name="base_Manager"  class="mymember" title="选择流程管理者" more="1" user="1" dept="1" station="1" workgroup="1" style="width:75%"  /></td>
            </tr>
            <tr>
                <th>实例管理者：</th>
                <td>
                    <input type="text" id="base_InstanceManager" value="@defaultManager" name="base_InstanceManager" class="mymember" title="选择流程实例管理者" more="1" user="1" dept="1" station="1" workgroup="1" style="width:75%"  /></td>
            </tr>*@
            <tr>
                <th>删除已完成：</th>
                <td>
                    <select id="base_RemoveCompleted" name="base_RemoveCompleted" class="myselect" style="width: 120px;">
                        <option value="0">不删除</option>
                        <option value="1">删除</option>
                    </select>
                </td>
            </tr>
          @*  <tr>
                <th>调试模式：</th>
                <td>
                    <select class="myselect" id="base_Debug">
                        <option value="0">关闭</option>
                        <option value="1">开启(有调试窗口)</option>
                        <option value="2">开启(无调试窗口)</option>
                    </select>
                    <input type="text" id="base_DebugUsers" title="选择调试人员" class="mymember" />
                    //调试人员
                </td>
            </tr>*@
            <tr>
                <th>备注：</th>
                <td>
                    <textarea rows="1" cols="1" id="base_Note" name="base_Note" class="mytext" style="width: 90%; height: 40px;"></textarea></td>
            </tr>
        </table>
    </div>
    <div id="div_data" class="mytab_div">
        <table cellpadding="0" cellspacing="1" border="0" width="99%" style="width: 99%" class="listtable" id="link_listtable">
            <thead>
                <tr>
                    <th style="width: 28%">数据库连接</th>
                    <th style="width: 28%">数据表</th>
                    <th style="width: 30%">主键</th>
                    <th><a href="javascript:link_add();">
                        <img alt="" src="@Url.Content("~/Content/images/ico/add.gif")" style="border:0; vertical-align:middle;" /><span style="vertical-align: middle;">添加</span></a></th>
                </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
    </div>
    <div id="div_title" class="mytab_div">
        <table cellpadding="0" cellspacing="1" border="0" width="99%" class="formtable">
            <tr>
                <th style="width: 100px;">数据连接：</th>
                <td>
                    <select id="title_dbconn" name="title_dbconn" class="myselect"
                        onchange="title_db_change(this)" style="width: 400px;">
                        <option value=""></option>@Html.Raw(link_DBConnOptions)
                    </select></td>
            </tr>
            <tr>
                <th>数据表：</th>
                <td>
                    <select id="title_tables" onchange="title_table_change(this)" name="title_tables" class="myselect" style="width: 400px;"></select></td>
            </tr>
            <tr>
                <th>完成标识：</th>
                <td>
                    <select id="title_title" name="title_title" class="myselect" style="width: 400px;"></select></td>
            </tr>
        </table>
    </div>
    <div style="width: 99%; margin: 8px auto 0 auto; text-align: center;">
        <input type="button" class="mybutton" value=" 确 定 " onclick="confirm1(this)" />
        <input type="button" class="mybutton" value=" 取 消 " onclick="new RoadUI.Window().close();" />
    </div>
</form>
<script type="text/javascript">
    debugger;
    var link_options = '<option value=""></option>@Html.Raw(link_DBConnOptions)'; //数据连接选项
    var isAdd = '1' == '@Request.QueryString["isadd"]';
    var openerid = '@Request.QueryString["openerid"]';
    var flowID = '@flowID';
    var defaultManager = '@defaultManager';
    var win = new RoadUI.Window();
    var frame = null;

    $(function () {
        debugger;
        var iframes = top.frames;
        for (var i = 0; i < iframes.length; i++) {
            if (iframes[i].name == openerid + "_iframe") {
                frame = iframes[i]; break;
            }
        }
        if (frame == null) frame = window.parent;

        if (!isAdd) {
            var json = frame.wf_json;
            if (json) {
                $("#base_Name").val(json.name);
                $("#base_Type").val(json.type);
                $("#base_Manager").val(json.manager || defaultManager); new RoadUI.Member().setValue($("#base_Manager"));
                $("#base_InstanceManager").val(json.instanceManager || defaultManager); new RoadUI.Member().setValue($("#base_InstanceManager"));
                $("#base_RemoveCompleted").val(json.removeCompleted);
                $("#base_Note").val(json.note);
                $("#base_Debug").val(json.debug);
                $("#base_DebugUsers").val(json.debugUsers); new RoadUI.Member().setValue($("#base_DebugUsers"));
                var databases = json.databases;
                if (databases) {
                    for (var i = 0; i < databases.length; i++) {
                        link_add(databases[i].link, databases[i].table, databases[i].primaryKey);
                    }
                }
                if (json.titleField) {
                    $("#title_dbconn").val(json.titleField.link);
                    $("#title_tables").html(getTables(json.titleField.link, json.titleField.table));
                    $("#title_title").html(getFields(json.titleField.link, json.titleField.table, json.titleField.field));
                }
            }
        }
    });


    function link_add(db, table, field) {
        debugger;
        var tableOptions = '';
        var fieldOptions = '';
        if (db && table) {
            tableOptions = getTables(db, table);
        }
        if (db && table && field) {
            fieldOptions = getFields(db, table, field);
        }
        var index = $("#link_listtable tbody tr").size() + 1;
        var tr = '<tr>';
        tr += '<td style="background:#ffffff; height:30px;">';
        tr += '<input type="hidden" name="link_index" value="' + index.toString() + '"/>';
        tr += '<select class="myselect" style="width:120px" onchange="link_db_change(this);" id="link_db_' + index.toString() + '" name="link_db_' + index.toString() + '">' + link_options + '</select></td>';
        tr += '<td style="background:#ffffff;"><select class="myselect" style="width:120px" onchange="link_table_change(this)" id="link_table_' + index.toString() + '" name="link_table_' + index.toString() + '">' + tableOptions + '</select></td>';
        tr += '<td style="background:#ffffff;"><select class="myselect" style="width:120px" id="link_key_' + index.toString() + '" name="link_key_' + index.toString() + '">' + fieldOptions + '</select></td>';
        tr += '<td style="background:#ffffff;"><a href="javascript:link_delete(' + index.toString() + ');" class="deletelink">删除</a></td>';
        tr += '</tr>';
        $("#link_listtable tbody").append(tr);
        new RoadUI.Select().init($(".myselect", $("#link_listtable tbody")));
        if (db) {
            $("#link_db_" + index.toString()).val(db);
        }
    }
    function link_delete(index) {
        $("#link_listtable tbody tr td input[type='hidden']").each(function () {
            if ($(this).val() == index.toString()) {
                $(this).parent().parent().remove();
            }
        });
    }
    function link_db_change(obj, table) {
        if (!obj || !obj.value) return;
        var html = getTables(obj.value, table);
        $("select", $(obj).parent().next()).html(html);
    }
    function getTables(connid, table) {
        var options = '<option value=""></option>';
        var tableds = frame.getTables(connid);
        for (var i = 0; i < tableds.length; i++) {
            options += '<option value="' + tableds[i].name + '" ' + (tableds[i].name == table ? 'selected="selected"' : '') + '>' + tableds[i].name + '</option>';
        }
        return options;
    }
    function link_table_change(obj, field) {
        if (!obj || !obj.value) return;
        var conn = $("select", $(obj).parent().prev()).val();
        $("select", $(obj).parent().next()).html(getFields(conn, obj.value, field));
    }
    function getFields(connid, table, field) {
        var options = '<option value=""></option>';
        var fields = frame.getFields(connid, table);
        for (var i = 0; i < fields.length; i++) {
            options += '<option value="' + fields[i].name + '" ' + (fields[i].name == field ? 'selected="selected"' : '') + '>' + fields[i].name + (fields[i].note ? '(' + fields[i].note + ')' : '') + '</option>';
        }
        return options;
    }

    function title_db_change(obj, table) {
        if (!obj || !obj.value) return;
        $("#title_tables").html(getTables(obj.value, table));

    }
    function title_table_change(obj, fields) {
        if (!obj || !obj.value) return;
        var conn = $("#title_dbconn").val();
        $("#title_title").html(getFields(conn, obj.value, fields));
    }



    function confirm1(but) {
        debugger;
        $(but).prop("disabled", true);
        if (isAdd) {
            frame.initwf();
        }
        var json = frame.wf_json;
        json.id = flowID;
        json.name = $("#base_Name").val() || '';
        json.type = $("#base_Type").val() || '';
        json.manager = $("#base_Manager").val() || '';
        json.instanceManager = $("#base_InstanceManager").val() || '';
        json.removeCompleted = $("#base_RemoveCompleted").val() || '';
        json.debug = $("#base_Debug").val() || "0";
        json.debugUsers = $("#base_DebugUsers").val() || '';
        json.note = $("#base_Note").val() || '';
        json.databases = [];
        $("input[type='hidden'][name='link_index']").each(function () {
            var index = $(this).val();
            json.databases.push({
                link: $('#link_db_' + index).val() || '',
                linkName: $("#link_db_" + index + " option[value='" + ($('#link_db_' + index).val() || '') + "']").text(),
                table: $('#link_table_' + index).val() || '',
                primaryKey: $('#link_key_' + index).val() || ''
            });
        });
        json.titleField = {
            link: $("#title_dbconn").val() || '',
            table: $("#title_tables").val() || '',
            field: $("#title_title").val() || ''
        };

        frame.wf_id = flowID;
        frame.initLinks_Tables_Fields(json.databases);
        new RoadUI.Window().close();
    }
</script>
